package gui_kalenderpanel;
import java.awt.BorderLayout;
import model.*;
import Logg_Inn.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
import java.util.Calendar;

import javax.swing.*;
import javax.swing.border.BevelBorder;


public class VisningsPanel extends JPanel implements PropertyChangeListener{
	
	AvtalePanel avtale;
	BeskjedPanel beskjed;
	KalenderPanel kalpan;
	KalenderKontroll kalenderKontroll;
	Bruker bruker;
	
	public VisningsPanel(KalenderKontroll kalkont, Bruker bruk) {
		
		kalenderKontroll = kalkont;
		bruker = bruk;

		setLayout(new BorderLayout());
		
		avtale = new AvtalePanel(kalenderKontroll, bruker);
		avtale.setBorder(new BevelBorder(BevelBorder.RAISED));
		avtale.addPropertyChangeListener(this);
		beskjed = new BeskjedPanel(bruk);
		beskjed.setBorder(new BevelBorder(BevelBorder.RAISED));
		
		JPanel venstre = new JPanel();
		venstre.setLayout(new BorderLayout());
		
		beskjed.addPropertyChangeListener(this);
		venstre.add(beskjed, BorderLayout.NORTH);
		venstre.add(avtale, BorderLayout.SOUTH);
		
		add(venstre, BorderLayout.WEST);
		
		kalpan = new KalenderPanel(kalenderKontroll, bruker);
		kalpan.addPropertyChangeListener(this);
		kalpan.getValgtUkepanel().addPropertyChangeListener(this);
		add(kalpan, BorderLayout.EAST);
		
	}
	
	public void propertyChange(PropertyChangeEvent evt) {
		if (evt.getPropertyName() == "velgbeskjed") {
			Beskjed temp = (Beskjed) evt.getNewValue();
			
			if (temp.getType() == BeskjedType.endring) {
				Avtale mote = temp.getAvtale();
				avtale.skjiftTilstand("beskjed");
				avtale.setAvtale(mote);
			}
			else if (temp.getType() == BeskjedType.avlysning) {
				Avtale mote = temp.getAvtale();
				avtale.setAvtale(mote);
				bruker.fjernAvtale(avtale.getAvtale());
				avtale.skjiftTilstand("vis annen");
			}
			else if (temp.getType() == BeskjedType.avslag) {
				Avtale mote = temp.getAvtale();
				avtale.skjiftTilstand("vis");
				avtale.setAvtale(mote);
			}
			else if (temp.getType() == BeskjedType.innkalling) {
				Avtale mote = temp.getAvtale();
				avtale.setAvtale(mote);
				avtale.skjiftTilstand("beskjed");
			}
		}
		else if (evt.getPropertyName() == "markert_avtale") {
			if (!(avtale.getTilstand().equals("endre"))) {
				Avtale temp = (Avtale) evt.getNewValue();
				avtale.setAvtale(temp);
				UkePanel ny = kalpan.getValgtUkepanel();
				
				if (temp.getEier().equals(bruker.getNavn())) {
					avtale.skjiftTilstand("vis");
				}
				else if (temp.getMote() && !(ny.getNavn().equals(bruker.getNavn()))){
					avtale.skjiftTilstand("vis annen");
				}
				else if (temp.getMote()) {
					avtale.skjiftTilstand("vis annen mote");
				}
				else {
					avtale.skjiftTilstand("vis annen");
				}
			}
		}
		else if (evt.getPropertyName() == "skiftet_panel") {
			UkePanel ny = (UkePanel) evt.getNewValue();
			ny.addPropertyChangeListener(this);
		}
		
	}
	
	
	public static void main(String[] args) {
		JFrame testFrame = new JFrame("Avtale/Beskjed");
		
		//set-opp
		ArrayList<Bruker> brukere = new ArrayList();
		Bruker Morten = new Bruker("Morten", "1234");
		Bruker Finn = new Bruker("Finn", "1234");
		Bruker Jens = new Bruker("Jens", "1234");
		Bruker Beate = new Bruker("Beate", "1234");
		
		
		Calendar date = Calendar.getInstance();
		date.set(2012, 2, 28);
		
		Jens.leggeTilAvtale(new Avtale("Jens", (int)(Math.random() * 1000), "Blip", "Rom 414", date, 11, 14));
		Morten.leggeTilAvtale((new Avtale("Morten", (int)(Math.random() * 1000), "2", "Rom 2", date, 15, 17)));
		brukere.add(Jens);
		brukere.add(Beate);
		brukere.add(Morten);
		brukere.add(Finn);
				
		KalenderKontroll kal = new KalenderKontroll(brukere);
		
		LoggInnPanel login = new LoggInnPanel(kal);
		LoggInnPanel login2 = new LoggInnPanel(kal);
		LoggInnPanel login3 = new LoggInnPanel(kal);
		LoggInnPanel login4 = new LoggInnPanel(kal);
	}
}
